home *** CD-ROM | disk | FTP | other *** search
- FEEDBACK Fdbck
-
- CYCLE_TIME 0.05
-
- ! Name MIN MAX
- INOUT Movement (-50.0, 50.0)
- IN Current (-1.0, 1.0)
- INOUT Position (0.0, 70.0)
- IN Reference(0.0, 70.0)
- LOCAL Last_move(-50.0, 50.0)
- IN Pos_reg (0, 1)
-
- ENABLE = Pos_reg OR ( CURRENT > 0.1 AND CURRENT < -0.1 ) OR
- ( MOVEMENT > 0.5 AND MOVEMENT < -0.5 );
-
- INITIALIZATION
- Last_move = Movement;
- Position = 0;
- Movement = 0;
- RESET
- Last_move = Movement;
- Movement = 0;
- PRE_PROCESSING
- Position = DELTA_TIME * ( Movement + Last_move ) / 2 + Position;
- Last_move = Movement;
- END;
-
- PRESET ! 0
- ! Reference = 70;
- Position = 0;
- END;
-
- PRESET ! 1
- ! Reference = 35;
- Position = 40;
- END;
-
- PRESET ! 2
- ! Reference = 35;
- Position = 0;
- END;
-
- PRESET ! 3
- ! Reference = 35;
- Position = 70;
- END;
-
- PRESET ! 4
- ! Reference = 35;
- Position = 25;
- END;
-
- ! Name Below Low High Above Max_truth
- Symbol Very_low OF Position ( 0.0, 0.0, 3.0, 8.0, 1.0)
- Symbol Low OF Position ( 0.0, 0.0, 25.0, 30.0, 1.0)
- Symbol Medium_low OF Position ( 25.0, 30.0, 30.0, 35.0, 1.0)
- Symbol Medium OF Position ( 30.0, 35.0, 35.0, 40.0, 1.0)
- Symbol Medium_high OF Position ( 35.0, 40.0, 40.0, 45.0, 1.0)
- Symbol High OF Position ( 40.0, 45.0, 70.0, 70.0, 1.0)
- Symbol Very_High OF Position ( 60.0, 65.0, 70.0, 70.0, 1.0)
-
- ! Name Below Low High Above Truth Center
- Symbol Down_large OF Movement (-50.0, -50.0, -20.0, -10.0, 1.0, -50.0)
- Symbol Down_small OF Movement (-20.0, -10.0, -10.0, 0.0, 1.0)
- Symbol Zero OF Movement (-10.0, 0.0, 0.0, 10.0, 1.0)
- Symbol Up_small OF Movement ( 0.0, 10.0, 10.0, 20.0, 1.0)
- Symbol Up_large OF Movement ( 10.0, 20.0, 50.0, 50.0, 1.0, 50.0)
-
- Symbol Down_medium OF Movement (-25.0, -15.0, -15.0, -5.0, 1.0)
- Symbol Down_creep OF Movement (-10.0, -5.0, -5.0, 0.0, 1.0)
- Symbol Up_creep OF Movement ( 0.0, 5.0, 5.0, 10.0, 1.0)
- Symbol Up_medium OF Movement ( 5.0, 15.0, 15.0, 25.0, 1.0)
-
- ! Name Below Low High Above Truth Center
- Symbol Negative_large ( -1.0, -1.0, -0.4, -0.2, 1.0, -1.0)
- Symbol Negative_small ( -0.4, -0.2, -0.2, 0.0, 1.0)
- Symbol Zero ( -0.2, 0.0, 0.0, 0.2, 1.0)
- Symbol Positive_small ( 0.0, 0.2, 0.2, 0.4, 1.0)
- Symbol Positive_large ( 0.2, 0.4, 1.0, 1.0, 1.0, 1.0)
-
- Symbol Negative ( -1.0, -1.0, 0.0, 0.0, 1.0)
- Symbol Positive ( 0.0, 0.0, 1.0, 1.0, 1.0)
-
- !!!!! Rules for output movement
- !
- ! -------------- Current --------------
- ! -L -S ZERO +S +L
- !-----|-------------------------------------
- ! UL | ZERO US UL UM UL
- ! US | DS ZERO US US UM
- ! Z | DS DS ZERO US US
- ! DS | DM DS DS ZERO US
- ! DL | DL DM DL DS ZERO
- !
-
- IF Position IS Very_low AND Current IS Positive
- THEN Movement IS Up_creep
-
- IF Position IS Very_low AND Current IS Negative
- THEN Movement IS Down_creep
-
- IF Position IS Very_high AND Current IS Positive
- THEN Movement IS Up_creep
-
- IF Position IS Very_high AND Current IS Negative
- THEN Movement IS Down_creep
-
- IF Movement IS up_large AND Current IS Negative_large
- THEN Movement IS Zero
-
- IF Movement IS up_large AND Current IS Negative_small
- THEN Movement IS Up_small
-
- ! this rule will cause a peak Movement
- !IF Movement IS up_large AND Current IS Zero
- !THEN Movement IS Up_large
-
- IF Movement IS up_large AND Current IS Positive_small
- THEN Movement IS Up_medium
-
- IF Movement IS up_large AND Current IS Positive_large
- THEN Movement IS Up_large
-
- IF Movement IS Up_small AND Current IS Negative_large
- THEN Movement IS Down_small
-
- IF Movement IS Up_small AND Current IS Negative_small
- THEN Movement IS Zero
-
- IF Movement IS Up_small AND Current IS Zero
- THEN Movement IS Zero
-
- IF Movement IS Up_small AND Current IS Positive_small
- THEN Movement IS Up_small
-
- IF Movement IS Up_small AND Current IS Positive_large
- THEN Movement IS Up_medium
-
- IF Movement IS Zero AND Current IS Negative_large
- THEN Movement IS Down_creep
-
- IF Movement IS Zero AND Current IS Negative_small
- THEN Movement IS Down_small
-
- IF Movement IS Zero AND Current IS Zero
- THEN Movement IS Zero
-
- IF Movement IS Zero AND Current IS Positive_small
- THEN Movement IS Up_creep
-
- IF Movement IS Zero AND Current IS Positive_large
- THEN Movement IS Up_small
-
- IF Movement IS Down_small AND Current IS Negative_large
- THEN Movement IS Down_medium
-
- IF Movement IS Down_small AND Current IS Negative_small
- THEN Movement IS Down_small
-
- IF Movement IS Down_small AND Current IS Zero
- THEN Movement IS Zero
-
- IF Movement IS Down_small AND Current IS Positive_small
- THEN Movement IS Zero
-
- IF Movement IS Down_small AND Current IS Positive_large
- THEN Movement IS Up_small
-
- IF Movement IS Down_large AND Current IS Negative_large
- THEN Movement IS Down_large
-
- IF Movement IS Down_large AND Current IS Negative_small
- THEN Movement IS Down_medium
-
- IF Movement IS Down_large AND Current IS Zero
- THEN Movement IS Down_large
-
- IF Movement IS Down_large AND Current IS Positive_small
- THEN Movement IS Down_small
-
- IF Movement IS Down_large AND Current IS Positive_large
- THEN Movement IS Zero
-
- END Fdbck;
-